library(tidyverse)
library(sf)
library(leaflet)Mapa de delitos
El último elemento que nos falta es el mapa de nuestro tablero de visualización. Para hacer el mapa vamos a usar el paquete {leaflet}, que es una interfase para la librería de Javascript de visualización geográfica Leaflet. Empezamos, como siempre, cargando los paquetes que vamos a usar
Y leyendo los datos, de la misma forma que en el diagrama de dispersión:
base_mapa <- read_rds("01_input/Mapa_scatter_delitos_prioritarios.rds")
Encoding(base_mapa$subtipo_de_delito) <- "latin1"
Encoding(base_mapa$entidad) <- "latin1"
head(base_mapa)| fecha | subtipo_de_delito | clave_ent | entidad | Total | CVEGEO | NOMGEO | geometry |
|---|---|---|---|---|---|---|---|
| 2022-07-01 | Robo a casa habitación | 01 | Aguascalientes | 164 | 01 | Aguascalientes | MULTIPOLYGON (((-102.2879 2… |
| 2022-07-01 | Robo a casa habitación | 02 | Baja California | 294 | 02 | Baja California | MULTIPOLYGON (((-112.3007 2… |
| 2022-07-01 | Robo a casa habitación | 03 | Baja California Sur | 120 | 03 | Baja California Sur | MULTIPOLYGON (((-109.8945 2… |
| 2022-07-01 | Robo a casa habitación | 04 | Campeche | 120 | 04 | Campeche | MULTIPOLYGON (((-91.9565 20… |
| 2022-07-01 | Robo a casa habitación | 05 | Coahuila de Zaragoza | 140 | 05 | Coahuila de Zaragoza | MULTIPOLYGON (((-102.3108 2… |
| 2022-07-01 | Robo a casa habitación | 06 | Colima | 123 | 06 | Colima | MULTIPOLYGON (((-114.7373 1… |
Una vez más, tenemos que filtrar por tipo de delito y por fecha (recuerden que el tipo de delito lo va a determinar el usuario y la fecha la dejaremos fija)
mapa_leaflet <- base_mapa %>%
filter(fecha==max(fecha)) %>%
filter(subtipo_de_delito=="Homicidio doloso")
mapa_leaflet| fecha | subtipo_de_delito | clave_ent | entidad | Total | CVEGEO | NOMGEO | geometry |
|---|---|---|---|---|---|---|---|
| 2022-08-01 | Homicidio doloso | 01 | Aguascalientes | 11 | 01 | Aguascalientes | MULTIPOLYGON (((-102.2879 2… |
| 2022-08-01 | Homicidio doloso | 02 | Baja California | 234 | 02 | Baja California | MULTIPOLYGON (((-112.3007 2… |
| 2022-08-01 | Homicidio doloso | 03 | Baja California Sur | 3 | 03 | Baja California Sur | MULTIPOLYGON (((-109.8945 2… |
| 2022-08-01 | Homicidio doloso | 04 | Campeche | 1 | 04 | Campeche | MULTIPOLYGON (((-91.9565 20… |
| 2022-08-01 | Homicidio doloso | 05 | Coahuila de Zaragoza | 6 | 05 | Coahuila de Zaragoza | MULTIPOLYGON (((-102.3108 2… |
| 2022-08-01 | Homicidio doloso | 06 | Colima | 75 | 06 | Colima | MULTIPOLYGON (((-114.7373 1… |
| 2022-08-01 | Homicidio doloso | 07 | Chiapas | 32 | 07 | Chiapas | MULTIPOLYGON (((-91.97364 1… |
| 2022-08-01 | Homicidio doloso | 08 | Chihuahua | 202 | 08 | Chihuahua | MULTIPOLYGON (((-107.6531 3… |
| 2022-08-01 | Homicidio doloso | 09 | Ciudad de México | 79 | 09 | Ciudad de México | MULTIPOLYGON (((-99.11124 1… |
| 2022-08-01 | Homicidio doloso | 10 | Durango | 14 | 10 | Durango | MULTIPOLYGON (((-105.9673 2… |
| 2022-08-01 | Homicidio doloso | 11 | Guanajuato | 251 | 11 | Guanajuato | MULTIPOLYGON (((-101.35 21…. |
| 2022-08-01 | Homicidio doloso | 12 | Guerrero | 92 | 12 | Guerrero | MULTIPOLYGON (((-99.9061 16… |
| 2022-08-01 | Homicidio doloso | 13 | Hidalgo | 17 | 13 | Hidalgo | MULTIPOLYGON (((-98.48321 2… |
| 2022-08-01 | Homicidio doloso | 14 | Jalisco | 175 | 14 | Jalisco | MULTIPOLYGON (((-104.8145 1… |
| 2022-08-01 | Homicidio doloso | 15 | México | 221 | 15 | México | MULTIPOLYGON (((-99.91237 2… |
| 2022-08-01 | Homicidio doloso | 16 | Michoacán de Ocampo | 180 | 16 | Michoacán de Ocampo | MULTIPOLYGON (((-102.0101 2… |
| 2022-08-01 | Homicidio doloso | 17 | Morelos | 88 | 17 | Morelos | MULTIPOLYGON (((-99.06209 1… |
| 2022-08-01 | Homicidio doloso | 18 | Nayarit | 9 | 18 | Nayarit | MULTIPOLYGON (((-105.2742 2… |
| 2022-08-01 | Homicidio doloso | 19 | Nuevo León | 155 | 19 | Nuevo León | MULTIPOLYGON (((-100.0161 2… |
| 2022-08-01 | Homicidio doloso | 20 | Oaxaca | 115 | 20 | Oaxaca | MULTIPOLYGON (((-96.08409 1… |
| 2022-08-01 | Homicidio doloso | 21 | Puebla | 90 | 21 | Puebla | MULTIPOLYGON (((-97.84218 2… |
| 2022-08-01 | Homicidio doloso | 22 | Querétaro | 11 | 22 | Querétaro | MULTIPOLYGON (((-99.18811 2… |
| 2022-08-01 | Homicidio doloso | 23 | Quintana Roo | 55 | 23 | Quintana Roo | MULTIPOLYGON (((-87.38975 1… |
| 2022-08-01 | Homicidio doloso | 24 | San Luis Potosí | 51 | 24 | San Luis Potosí | MULTIPOLYGON (((-100.6035 2… |
| 2022-08-01 | Homicidio doloso | 25 | Sinaloa | 33 | 25 | Sinaloa | MULTIPOLYGON (((-106.4129 2… |
| 2022-08-01 | Homicidio doloso | 26 | Sonora | 131 | 26 | Sonora | MULTIPOLYGON (((-110.9509 2… |
| 2022-08-01 | Homicidio doloso | 27 | Tabasco | 27 | 27 | Tabasco | MULTIPOLYGON (((-92.45106 1… |
| 2022-08-01 | Homicidio doloso | 28 | Tamaulipas | 51 | 28 | Tamaulipas | MULTIPOLYGON (((-99.71772 2… |
| 2022-08-01 | Homicidio doloso | 29 | Tlaxcala | 12 | 29 | Tlaxcala | MULTIPOLYGON (((-98.05499 1… |
| 2022-08-01 | Homicidio doloso | 30 | Veracruz de Ignacio de la Llave | 98 | 30 | Veracruz de Ignacio de la Llave | MULTIPOLYGON (((-96.09229 1… |
| 2022-08-01 | Homicidio doloso | 31 | Yucatán | 4 | 31 | Yucatán | MULTIPOLYGON (((-92.2241 20… |
| 2022-08-01 | Homicidio doloso | 32 | Zacatecas | 101 | 32 | Zacatecas | MULTIPOLYGON (((-101.8488 2… |
Ahora, para poder crear un mapa de coropletas, en el que los colores representen la cantidad de delitos, necesitamos una paleta de colores:
pal <- colorNumeric("inferno",mapa_leaflet$Total,reverse = T,na.color = NA)Ya con esto, crtear un mapa interactivo es muy fácil:
leaflet() %>%
addProviderTiles(providers$OpenStreetMap) %>%
addPolygons(data=mapa_leaflet$geometry,
fillColor = pal(mapa_leaflet$Total),
color="black",
weight = 1,
opacity = 1,
fillOpacity = .7,
label = mapa_leaflet$NOMGEO,
group = "Entidades")%>%
addLegend(pal = pal,values = mapa_leaflet$Total) %>%
addLayersControl(overlayGroups = "Entidades")